// pages/profile/profile.js
const app = getApp();
const userService = require('../../services/userService');
const kitchenService = require('../../services/kitchenService');

Page({
  /**
   * 页面的初始数据
   */
  data: {
    user: {},
    kitchenCount: 0,
    recipeCount: 0,
    favoriteCount: 0,
    mealPlanCount: 0,
    showEditUser: false,
    showAboutApp: false,
    tempUser: {},
    theme: 'theme-green',
    font: 'font-default',
    layout: 'layout-list'
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad() {
    this.getUserInfo();
    this.getStats();
    this.getSettings();
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    this.getStats(); // 刷新统计数据
  },

  getUserInfo() {
    const userInfo = userService.getUserInfo();
    this.setData({
      user: userInfo || {}
    });
  },

  getStats: async function() {
    try {
      // 获取厨房数量
      const kitchenCount = await kitchenService.getKitchenCount();
      
      // 获取菜品数量 -
      //const dishCount = await kitchenService.getDishCount();
      
   
      //获取菜谱数量
      const recipeCount = await kitchenService.getDishCount();
      
      // 获取收藏数量
      const favoriteCount = await kitchenService.getFavoriteavoriteCount();
      
      //获取饮食计划数量
      const mealPlanCount = 0;
      
      this.setData({
        kitchenCount,
        recipeCount,
        favoriteCount,
        mealPlanCount
      });
    } catch (error) {
      console.error('获取统计数据失败', error);
      wx.showToast({
        title: '获取统计数据失败',
        icon: 'none'
      });
    }
  },

  /**
   * 获取用户设置
   */
  getSettings() {
    try {
      // 从本地存储获取设置
      const theme = wx.getStorageSync('theme') || 'theme-green';
      const font = wx.getStorageSync('font') || 'font-default';
      const layout = wx.getStorageSync('layout') || 'layout-list';
      
      this.setData({ theme, font, layout });
      this.applySettings();
    } catch (error) {
      console.error('获取设置失败', error);
    }
  },

  /**
   * 显示编辑用户信息弹窗
   */
  showEditUserModal() {
    this.setData({
      showEditUser: true,
      tempUser: {...this.data.user}
    });
  },

  /**
   * 选择并上传头像
   */
  chooseAvatar() {
    const that = this;
    wx.chooseImage({
      count: 1, // 默认9
      sizeType: ['compressed'], // 可以指定是原图还是压缩图，默认二者都有
      sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机，默认二者都有
      success: function (res) {
        // 返回选定照片的本地文件路径列表，tempFilePath可以作为img标签的src属性显示图片
        const tempFilePaths = res.tempFilePaths;
        
        // 显示加载中
        wx.showLoading({
          title: '上传中...',
        });
        
        // 上传头像到云存储
        that.uploadAvatarToCloud(tempFilePaths[0]);
      }
    });
  },

  /**
   * 上传头像到云存储
   */
  uploadAvatarToCloud(filePath) {
    const that = this;
    // 修复云存储路径格式
    const timestamp = new Date().getTime();
    const cloudPath = `avatars/user_${timestamp}.png`;
    
    wx.cloud.uploadFile({
      cloudPath: cloudPath,
      filePath: filePath,
      success: res => {
        // 获取上传后的文件ID
        const fileID = res.fileID;
        
        // 在编辑窗口中显示新头像
        that.setData({
          'tempUser.avatarUrl': fileID
        });
        
        wx.hideLoading();
        wx.showToast({
          title: '头像上传成功',
          icon: 'success'
        });
      },
      fail: err => {
        wx.hideLoading();
        wx.showToast({
          title: '上传失败',
          icon: 'none'
        });
        console.error('上传失败：', err);
      }
    });
  },

  /**
   * 保存用户信息
   */
  saveUserInfo() {
    const userInfo = this.data.tempUser;
    
    userService.updateUserInfo(userInfo)
      .then(() => {
        this.setData({
          user: userInfo,
          showEditUser: false
        });
        
        wx.showToast({
          title: '保存成功',
          icon: 'success'
        });
      })
      .catch(err => {
        wx.showToast({
          title: '保存失败',
          icon: 'none'
        });
        console.error('保存用户信息失败：', err);
      });
  },

  /**
   * 应用设置
   */
  applySettings() {
    // 在这里应用主题、字体和布局设置
    // 微信小程序不支持直接改变全局样式，可以通过设置全局数据来模拟
    const { theme, font, layout } = this.data;
    
    // 可以设置到全局数据中
    if (app.globalData) {
      app.globalData.theme = theme;
      app.globalData.font = font;
      app.globalData.layout = layout;
    }
  },

  /**
   * 切换主题色
   */
  switchTheme(e) {
    const theme = e.currentTarget.dataset.theme;
    
    // 使用全局方法更新主题
    app.updateTheme(theme);
    
    // 更新当前页面
    this.setData({ theme });
    
    wx.showToast({
      title: '主题已更新',
      icon: 'success',
      duration: 1000
    });
  },

  /**
   * 切换字体样式
   */
  switchFont(e) {
    const font = e.currentTarget.dataset.font;
    this.setData({ font });
    wx.setStorageSync('font', font);
    this.applySettings();
  },

  /**
   * 切换布局模式
   */
  switchLayout(e) {
    const layout = e.currentTarget.dataset.layout;
    this.setData({ layout });
    wx.setStorageSync('layout', layout);
    this.applySettings();
  },

  /**
   * 导航到厨房列表页面
   */
  navigateToKitchens() {
    wx.navigateTo({
      url: '/pages/kitchen-list/kitchen-list',
    });
  },

  /**
   * 导航到菜谱页面
   */
  navigateToRecipes() {
    wx.navigateTo({
      url: '/pages/recipe/recipeList/recipeList',
    });
  },

  /**
   * 导航到收藏页面
   */
  navigateToFavorites() {
    wx.navigateTo({
      url: '/pages/favorites/favorites'
    })
  },

  /**
   * 导航到饮食计划页面
   */
  navigateToMealPlans() {
    wx.navigateTo({
      url: '/pages/mealplan/mealplanList/mealplanList',
    });
  },

  /**
   * 处理退出登录
   */
  handleLogout() {
    wx.showModal({
      title: '确认退出',
      content: '确定要退出登录吗？',
      success: (res) => {
        if (res.confirm) {
          // 清除用户信息
          wx.removeStorageSync('userInfo');
          wx.removeStorageSync('token');
          wx.removeStorageSync('defaultKitchen');
          
          // 显示退出成功提示
          wx.showToast({
            title: '已退出登录',
            icon: 'success',
            duration: 1500
          });
          
          // 延迟跳转到登录页
          setTimeout(() => {
            wx.reLaunch({
              url: '/pages/login/login'
            });
          }, 1500);
        }
      }
    });
  },

  /**
   * 隐藏编辑用户信息弹窗
   */
  hideEditUserModal() {
    this.setData({
      showEditUser: false
    });
  },

  /**
   * 监听昵称输入
   */
  onNicknameInput(e) {
    this.setData({
      'tempUser.nickname': e.detail.value
    });
  },

  /**
   * 监听简介输入
   */
  onBioInput(e) {
    this.setData({
      'tempUser.bio': e.detail.value
    });
  },

  /**
   * 显示关于应用弹窗
   */
  showAboutAppModal() {
    this.setData({
      showAboutApp: true
    });
  },

  /**
   * 隐藏关于应用弹窗
   */
  hideAboutAppModal() {
    this.setData({
      showAboutApp: false
    });
  }
}); 